編譯型語言在程式執行之前,有一個單獨的編譯過程,將程式翻譯成機器語言就不用再進行翻譯了。
解釋型語言,是在執行的時候將程式翻譯成機器語言,雖然Java程式在執行之前也有一個編譯過程,但是並不是將程式編譯成機器語言,而是將它編譯成位元組碼(可以理解為一箇中間語言)。在執行的時候,由JVM將位元組碼再翻譯成機器語言。
編譯型語言:
編譯型語言最大的優勢之一就是其執行速度。用C/C++編寫的程式執行速度要比用Java編寫的相同程式快30%-70%。
編譯型程式比解釋型程式消耗的記憶體更少。
不利的一面——編譯器比直譯器要難寫得多。
編譯器在除錯程式時提供不了多少幫助——有多少次在你的C語言程式碼中遇到一個“空指標異常”時,需要花費好幾個小時來明確錯誤到底在程式碼中的什麼位置。
可執行的編譯型程式碼要比相同的解釋型程式碼大許多。例如,C/C++的.exe檔案要比同樣功能的Java的.class檔案大很多。
編譯型程式是面向特定平臺的因而是平臺依賴的。
編譯型程式不支援程式碼中實現安全性——例如,一個編譯型的程式可以訪問記憶體的任何區域,並且可以對你的PC做它想做的任何事情(大部分病毒是使用編譯型語言編寫的)
由於鬆散的安全性和平臺依賴性,編譯型語言不太適合開發因特網或者基於Web的應用。